package one.stand.util;

import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;

import java.util.HashSet;
import java.util.Set;
import java.util.regex.Pattern;

/**
 * 字符处理工具类
 */
public class StringUtils {

    /**
     * 格式化订阅消息微信推送名称
     * @param name
     * @return
     */
    public static String formatName(final String name){
        String userName = Pattern.compile("[\\d]").matcher(name).replaceAll("*");
        userName = userName.length() > 10 ? userName.substring(0,10) : userName;
        return org.springframework.util.StringUtils.isEmpty(userName) ? "某某" : userName;
    }

    /**
     * 格式化发送文本
     * @param content
     * @return
     */
    public static String formatContent(String content){
        content = content != null ? content.length() > 20 ? content.substring(0,20) : content : "未知消息";
        return content;
    }

    /**
     * 获取所有字段为null的属性名
     * 用于BeanUtils.copyProperties()拷贝属性时，忽略空值
     * @param source
     * @return
     */
//    public static String[] getNullPropertyNames (Object source) {
//        final BeanWrapper src = new BeanWrapperImpl(source);
//        java.beans.PropertyDescriptor[] pds = src.getPropertyDescriptors();
//
//        Set<String> emptyNames = new HashSet<String>();
//        for(java.beans.PropertyDescriptor pd : pds) {
//            Object srcValue = src.getPropertyValue(pd.getName());
//            if (srcValue == null){
//                emptyNames.add(pd.getName());
//            }
//        }
//        String[] result = new String[emptyNames.size()];
//        return emptyNames.toArray(result);
//    }
}
